package com.teach.config;

import java.util.Properties;

import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import lombok.Data;

@ConfigurationProperties(prefix = "config",ignoreInvalidFields = true, ignoreUnknownFields = true)
@Configurable
@Configuration
@Data
public class ConfigProperties {
	
	/**
	 * 是否是开发模式
	 */
	public Boolean dev = false;

	public Image image = new Image();
	
	/**
	 * GoFastDFS服务配置
	 */
	public GoFastDfs goFastDfs = new GoFastDfs();


	/**
	 * 雪花数的配置
	 */
	public Id id = new Id();
	
	/**
	 * 全局错误配置
	 */
	public Error error = new Error();
	
	/**
	 * 模拟登陆配置
	 */
	public SimulateLogin simulateLogin = new SimulateLogin();
	
	/**
	 * 验证码的配置
	 *
	 */
	public Properties kaptchaProperties = new Properties();
	
	/**
	 * 短信配置
	 */
	public Sms sms = new Sms();
	
	
	
	@Data
	public static class Id {
		/**
		 * 雪花数的节点编号，0-31，默认0
		 */
		public Long workerId = 0L;
		/**
		 * 雪花数的数据中心编号，0-31，默认0
		 */
		public Long datacenterId = 0L;
	}
	
	@Data
	public static class Error {
		/**
		 * 默认的错误视图名：error
		 */
		public String viewName = "error";
		
		/**
		 * 使用错误视图的请求参数名：_err
		 */
		public String errorParameter = "_err";
	}
	
	/**
	 * 模拟登陆
	 * @author J.L.Zhou
	 *
	 */
	@Data
	public static class SimulateLogin {
		
		/**
		 * 是否激活模拟登陆（开发时使用，正式环境请关闭）默认：false
		 */
		public Boolean enable = false;
		/**
		 * 模拟登陆的用户名
		 */
		public String userName;
		
		/**
		 * 模拟登陆的密码
		 */
		public String userPwd;
		
	
	}
	

	@Data
	public static class Sms {
		
		/**
		 * 是否激活,未激活使用模拟发送（不发送，验证码为多个1），默认:false
		 */
		public Boolean enable = false;
		
		public Aliyun aliyun = new Aliyun();
		
		/**
		 * 短信超时，默认60秒
		 */
		public Integer timeout = 60;			
		
		/**
		 * 随机符号,默认：0123456789
		 */
		public String codes = "0123456789";

		@Data
		public static class Aliyun {

			/**
			 * 开发者自己的AccessKeyId(在阿里云访问控制台寻找)
			 */
			public String accessKeyId;
			/**
			 * 开发者自己的AccessKeySecret(在阿里云访问控制台寻找)
			 */
			public String accessKeySecret;
			/**
			 * 短信签名
			 */
			public String signName;
			/**
			 * 短信模板code
			 */
			public String templateCode;

		}
	}

	@Data
	public static class Image {
		/**
		 * 水印，可以是本地路径或者URL
		 */
		public String watermark = "";
		
		/**
		 * 输出图片质量0-1直接,默认：0.8
		 */
		public float quality = 0.8f;
		/**
		 * 大图最大宽
		 */
		public Integer width = 1000;
		/**
		 * 大图最大高
		 */
		public Integer height = 1000;
		/**
		 * 小图宽
		 */
		public Integer thumbnailWidth = 100;
		/**
		 * 小图高
		 */
		public Integer thumbnailHeight = 100;
	}

	@Data
	public static class GoFastDfs {
		
		/**
		 * 是否激活，不激活只会模拟上传，模拟为false，上线需要开启
		 */
		public Boolean enable = false;
		/**
		 * 上传服务器URL地址
		 */
		public String server = "http://files.jlzhou.top/group1/upload";
		/**
		 * 场景
		 */
		public String scene = "student";
		/**
		 * 授权token
		 */
		public String token = "1qaz!QAZ";
		
		/**
		 * 服务器存放路径
		 */
		public String path = "";
	}
}
